package com.smart.mattress.account.dao;

import java.util.List;

import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;


/**
 * 用户相关操作
 * Created by rencong on 17/3/10.
 */
public interface UserInfoDao {

    /**
     * 添加用户信息
     * @param userInfo 用户信息
     * @return 添加成功返回true,否则返回false
     */
    public boolean add(Object userInfo,String collectionName);

    /**
     * 根据用户编号删除用户信息
     * @param no 用户编号
     * @return 删除成功返回true,否则返回false
     */
    public boolean delete(String no);

    /**
     * 修改用户信息
     * @param userInfo 对象信息,注意要有id
     * @return 修改成功true,否则false
     */
    public boolean update(Object userInfo,String collectionName);

    /**
     * 同时更新两张表，ConcernInfo，UserInfo
     * @param concernInfo
     * @param userInfo
     * @return
     */
    public boolean update(Object concernInfo,Object userInfo1,Object userInfo2);

    public boolean update(Query query,Update update,Class o_class,String name);
    
    /**
     * 根据条件查询(多条)
     * @param query 查询语句
     * @return 查询结果(list)
     */
    public List findListByQuery(Query query,Class infoClass,String collectionName);

    /**
     * 根据条件查询(一条)
     * @param query 查询语句
     * @return 查询结果(唯一)
     */
    public Object findOneByQuery(Query query,Class infoClass,String name);

    /**
     * 根据条件进行统计计数
     * @param query 查询语句
     * @return 统计结果
     */
    public long count(Query query,Class infoClass,String collectionName);
    
    /**
     * 判断指定的对象是否存在
     * @param query
     * @param infoClass
     * @return 存在返回true，不存在返回false
     */
    public boolean exist(Query query,Class infoClass);
    
    /**
     * @return
     */
    public boolean remove(Query query,Class infoClass,String name);
    
    /**
     * 清除信息
     * @param query
     * @param infoClass
     * @param name
     * @return
     */
    public boolean delete(Query query,Class infoClass,String name);

   
}
